package com.spring.hed.factory.strategy;

import com.spring.design.strategy.QuackBehavior;

/**
 * 把经常变的方法单独拿出来，做个接口，单独做个类实现，在组合在鸭子中，
 * 其它鸭子继承这个抽象鸭子，怎么飞怎么叫都取决于飞和叫这二个接口实现
 */
public abstract class Duck {

    // 把这些行的接口为组合在鸭子中，
    protected FlyBehavior fb;
    protected QuackBehavior qb;

    public void parFly(){
        fb.fly();
    }

    public void parQuack(){
        qb.quack();
    }

    public FlyBehavior getFb() {
        return fb;
    }

    public void setFb(FlyBehavior fb) {
        this.fb = fb;
    }

    public QuackBehavior getQb() {
        return qb;
    }

    public void setQb(QuackBehavior qb) {
        this.qb = qb;
    }

    public void swim(){
        System.out.println("游泳..");
    }

    public abstract void displsy();

}
